package com.saver.view.item;

import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ExpandableListView;

import com.saver.R;
import com.saver.core.domain.Banco;
import com.saver.core.domain.Parametro;
import com.saver.core.persistence.BancoSQLite;
import com.saver.core.persistence.ParametroSQLite;
import com.saver.core.util.Constantes;
import com.saver.view.adapter.AjustesListAdapter;
import com.saver.view.adapter.AjustesListAdapter.BancosViewHolder;
import com.saver.view.adapter.AjustesListAdapter.RedesSocialesViewHolder;
import com.saver.view.adapter.ConfiguracionItem;
import com.saver.view.gui.FragmentSupport;

import java.util.ArrayList;
import java.util.List;

public class ConfiguracionFragment extends FragmentSupport implements OnItemClickListener {

    private static final String FRAGMENT_NAME = "FRAGMENTO_CONFIGURACION";
    private static final int FRAGMENT_POSIION = 2;

    ExpandableListView expList;
    AjustesListAdapter expListAdapter;
    BancoSQLite bancoSQLite;
    List<Banco> listaBanco;
    ParametroSQLite parametroSQLite;
    Resources res;

    public ConfiguracionFragment() {
        setFragmentName(FRAGMENT_NAME);
        setPosition(FRAGMENT_POSIION);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.ajustes_list_layout, container, false);

        bancoSQLite = new BancoSQLite(this.getActivity());
        parametroSQLite = new ParametroSQLite(this.getActivity());
        Parametro usuario = parametroSQLite.buscarPorPropiedad(Constantes.PARAMETRO_CODIGO_USUARIO);

        listaBanco = bancoSQLite.buscarTodoActivo();
        expList = (ExpandableListView) view.findViewById(R.id.expandableList);

        expListAdapter = new AjustesListAdapter(this.getActivity().getApplicationContext());

        expList.setGroupIndicator(null);

        ArrayList<ConfiguracionItem> bancosItems = new ArrayList<ConfiguracionItem>();
        ArrayList<ConfiguracionItem> monedasItems = new ArrayList<ConfiguracionItem>();
        ArrayList<ConfiguracionItem> datosUsuarioItems = new ArrayList<ConfiguracionItem>();
        ArrayList<ConfiguracionItem> redesSocialesItems = new ArrayList<ConfiguracionItem>();


        res = getResources();

        for (Banco banco : listaBanco) {
            ConfiguracionItem configBancos = new ConfiguracionItem();
            configBancos.setIconoBanco(banco.getIcono());
            configBancos.setNombreBanco(banco.getNombre());
            configBancos.setUrlBanco(banco.getUrl());
            bancosItems.add(configBancos);
        }
        for (int y = 0; y < res.getStringArray(R.array.monedas).length; y++) {
            ConfiguracionItem monedasConfig = new ConfiguracionItem();
            monedasConfig.setMoneda(res.getStringArray(R.array.monedas)[y]);
            monedasItems.add(monedasConfig);
        }
        for (int y = 0; y < res.getStringArray(R.array.datos_usuario).length; y++) {
            ConfiguracionItem datosUsuarioConfig = new ConfiguracionItem();
            String idUsuario = "";
            if (usuario != null) {
                idUsuario = (res.getStringArray(R.array.datos_usuario)[y]).replace("#", usuario.getValor());
            }
            datosUsuarioConfig.setIdUsuario(idUsuario);
            datosUsuarioItems.add(datosUsuarioConfig);
        }
        for (int y = 0; y < res.getStringArray(R.array.redes_sociales).length; y++) {
            ConfiguracionItem redesSocialesConfig = new ConfiguracionItem();
            String redSocial = (res.getStringArray(R.array.redes_sociales)[y]);
            redesSocialesConfig.setRedSocial(redSocial);
            redesSocialesConfig.setUrlRedSocial("https://www.facebook.com/mingy.money");
            redesSocialesItems.add(redesSocialesConfig);
        }

        expListAdapter.setupItems(monedasItems, bancosItems, datosUsuarioItems, redesSocialesItems);
        expList.setAdapter(expListAdapter);

//		if(expListAdapter.getChildrenCount(0) >= 1){
//			expList.expandGroup(0);
//			expList.expandGroup(1);
//			expList.expandGroup(2);
//			expList.expandGroup(3);
//		}

        expList.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {

            @Override
            public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
//				if(groupPosition == 0){
//					return true;
//				} else {
                return false;
//				}
            }
        });
        expList.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {

            @Override
            public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
                if (v.getTag() instanceof BancosViewHolder) {
                    BancosViewHolder viewHolder = (AjustesListAdapter.BancosViewHolder) v.getTag();
                    Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse((String) viewHolder.url.getText()));
                    startActivity(myIntent);
                    return false;
                } else if (v.getTag() instanceof RedesSocialesViewHolder) {
                    RedesSocialesViewHolder viewHolder = (AjustesListAdapter.RedesSocialesViewHolder) v.getTag();
                    Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse((String) viewHolder.url.getText()));
                    startActivity(myIntent);
                    return false;
                }
                return false;
            }
        });
        return view;
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int arg2, long arg3) {
        Log.d("ddsfd", "onItemChildClick333333");
    }
}
